Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Rendered • View rawDownload


android/README.md e89fc13824101c8e8d034e632df6f2d40edbfe9c (e89fc138) Text, 2.48 KB

MeshChatX Android (Chaquopy)

Native APK with embedded Python (T383838meshchatx/) and a WebView UI.

MeshChatX server (Docker)

The headless/web server is also published as a container (separate from this APK):

Docker Hub: T383838quad4io/meshchatx
GHCR: T383838ghcr.io/quad4-software/meshchatx

See the repository root README for T383838docker compose usage.

Prerequisites

• Android SDK (T383838ANDROID_HOME / T383838ANDROID_SDK_ROOT) with T383838cmdline-tools and a matching NDK (see T383838android/app/build.gradle for the pinned NDK version used in CI).
JDK 17 (Temurin or compatible).
• Chaquopy vendor wheels under T383838android/vendor/ (build locally with T383838bash scripts/build-android-wheels-local.sh from repo root, or use CI artifacts).

Build

From repo root:

T282828
bash scripts/build-android-wheels-local.sh
Tffa657cd android
./gradlew --no-daemon :app:assembleDebug :app:assembleRelease


There is a single application variant (no product flavors). Gradle syncs the entire T383838meshchatx/ tree into T383838app/src/main/python/meshchatx/ (including T383838public/repository-server-bundled for the in-app repository server). The T383838fetchRepositoryBundledWheels task runs before sync when bundled wheels are missing; if repo root T383838dist/reticulum_meshchatx-*.whl exists (e.g. from T383838python -m build --wheel -o dist .), that wheel is preferred over PyPI for the bundled set.

ABI selection and packaging

T383838-PmeshchatxAbis=... or T383838MESHCHATX_ABIS: comma-separated list from T383838arm64-v8a, T383838x86_64, T383838armeabi-v7a (default: all three).
T383838-PmeshchatxAbiPackaging=universal|split or T383838MESHCHATX_ABI_PACKAGING: T383838universal (default) emits one APK per build type; T383838split may emit per-ABI splits when more than one ABI is selected.

Outputs

With default universal packaging:

• Debug: T383838app/build/outputs/apk/debug/app-debug.apk
• Release (unsigned until you sign): T383838app/build/outputs/apk/release/app-release-unsigned.apk

Signing release APKs

See repo root T383838scripts/sign-android-apks.sh (default glob targets T383838outputs/apk/release/).

Troubleshooting

1. Confirm T383838android/vendor/ contains required T383838.whl files from the wheel build script.
2. Run T383838./gradlew :app:assembleDebug with T383838--stacktrace if Python sync or Chaquopy pip steps fail.
3. Re-run T383838./gradlew :app:assembleDebug after changing T383838meshchatx/ assets; sync runs on merge Python sources tasks.

See ../LICENSE for full text and notices.


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────